export function placeholder(params) {
    let ArrParams = params?JSON.parse(JSON.stringify(params)):null // 深拷贝数据不影响原是数据
    if (isType(ArrParams) === '[object Array]') {
        ArrParams = isArray(ArrParams)
    }
    if (isType(ArrParams) === '[object Object]') {
        for (let key in ArrParams) {
            if (isType(ArrParams[key]) === '[object Array]') {
                ArrParams[key] = isArray(ArrParams[key])
            } else if (isType(ArrParams[key]) === '[object Object]') {

            } else if (isType(ArrParams[key]) === '[object String]'|| isType(ArrParams) === '[object Number]') {
                if(isNumeric(ArrParams[key])){
                    ArrParams[key] = isRegular(ArrParams[key])
                }
            }
        }
    }
    if (isType(ArrParams) === '[object String]' || isType(ArrParams) === '[object Number]' ) {
        if(isNumeric(ArrParams)){
            ArrParams = isRegular(ArrParams)
        }
    }
    return ArrParams
}


// 数组数据处理
function isArray(params) {
    params.forEach(item => {
        if (isType(item) === '[object Object]') {
            for (let key in item) {
                if(isType(item[key]) !== '[object Array]'){
                    if (isNumeric(item[key]) && item[key] != 0 && key != 'id' && key != 'planId' && key != 'treeId' && key != 'parentId') {
                        item[key] = isRegular(item[key])
                    }
                } 
                if(isType(item[key]) === '[object Array]'  && item[key].length > 0){
                    isArray(item[key])
                }
                
            }
        }
    })
    return params
}

// 数据正则处理 
function isRegular(num) {
    const stringNumber = num.toString();
    const integerPart = stringNumber.split('.')[0];
    const decimalPart = stringNumber.split('.')[1];
    const integerFormatted = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    return decimalPart ? integerFormatted + '.' + decimalPart : integerFormatted;
}

// 正则验证数据
function isNumeric(str) {
    // 正则表达式：以数字开头，可包含小数点和数字，以数字结尾
    // var reg = /^-?\d+(\.\d+)?$/; 
    var  reg = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/
    return reg.test(str);
}
//   判断数据类型
function isType(str) {
    return Object.prototype.toString.call(str)
}